<?php
    require_once('../modele/Utilisateur.class.php');
    require_once('../modele/Projet.class.php');
    require_once('../modele/Activite.class.php');
    require_once('../modele/Tache.class.php');
    require_once('../acces_donnees/AccesDonneesUtilisateur.class.php');
    require_once('../acces_donnees/AccesDonneesProjet.class.php');
    require_once('../acces_donnees/AccesDonneesActivite.class.php');
    require_once('../acces_donnees/AccesDonneesTache.class.php');
    include_once('../bibliotheque/f_verification.php');
    
    //Lancer session_start() toujours après la définition des classes.
    session_start();

    $ensemblePages = array("gestion_projet" => "../vue/v_gestion_projet.php",
                           "modifier_projet" => "../vue/v_modifier_projet.php",
                           "modifier_activite" => "../vue/v_modifier_activite.php",
                           "gestion_activite" => "../vue/v_gestion_activite.php",
                           "afficher_activite" => "../vue/v_afficher_activite.php",
                           "gestion_tache" => "../vue/v_gestion_tache.php",
                           "modifier_tache" => "../vue/v_modifier_tache.php",
                           "gestion_admin_comptes" => "../vue/v_admin_gestion_comptes.php",
                           "gestion_deconnexion" => "../vue/v_deconnexion.php");

    if (empty($_SESSION['utilisateur']))
    {
        if (($formulaireLogin = controleFormulaire($_POST)) !== FALSE)
        {
            $formulaireLogin = controleFormulaire($_POST);
    
            if (!empty($_POST['ftexte_login_inscription_utilisateur']) && !empty($_POST['ftexte_inscription_mot_de_passe_utilisateur']))
            {
                $inscriptionUtilisateur = new Utilisateur(htmlspecialchars($_POST['ftexte_login_inscription_utilisateur']),
                                                          md5($_POST['ftexte_inscription_mot_de_passe_utilisateur']), 'Utilisateur');
                $accesInscriptionUtilisateur = new AccesDonneesUtilisateur($inscriptionUtilisateur);
                $accesInscriptionUtilisateur->creation();
            }
            
            //Crée un objet de type utilisateur, form[0] et form[1] contiennent le login et mot de passe.
            $utilisateur = new Utilisateur($formulaireLogin[0], md5($formulaireLogin[1]));
            $accesUtilisateur = new AccesDonneesUtilisateur($utilisateur);
            $accesUtilisateur->selectionConnexion();
            
            if ($utilisateur->getUsrIdentification() === TRUE)
            {
                //On liste la page avec les projets, concerne la page par défaut, gestion_projet.
                $projet = new Projet();
                $accesProjet = new AccesDonneesProjet($projet, $utilisateur);
                
                //On utilise les sessions pour l'utilisateur
                $_SESSION['utilisateur'] = $utilisateur;
                $_SESSION['projet'] = $projet;
                $_SESSION['accesProjetSelection'] = $accesProjet->selectionProjetsActivite();
                
                if ($utilisateur->getUsrRole() == 'Admin')
                {
                    //Page par défaut pour la première visite pour un admin
                    $_SESSION['projetsUtilisateurs'] = $accesProjet->selectionProjetsUtilisateurs();
                    $_SESSION['comptesUtilisateurs'] = $accesUtilisateur->selectionUtilisateurs();
                    $_SESSION['statistiques'] = $accesProjet->selectionStatistiques();
                    $accesActivite = new AccesDonneesActivite(new Activite(), $projet, $utilisateur);
                    $_SESSION['activitesUtilisateurs'] = $accesActivite->selectionToutesActivites();
                    include('../vue/v_debut_admin.php');
                    include($ensemblePages['gestion_admin_comptes']);
                }
                else
                {
                    //Page par défaut pour la première visite pour un utilisateur
                    include_once('../vue/v_debut_html.php');    
                    include($ensemblePages['gestion_projet']);
                }
            }
            else
            {
                header("Location: ../vue/v_login_projet.php");
            }
        }
    }
    else if (isset($_SESSION['utilisateur']))
    {
        $utilisateur = $_SESSION['utilisateur'];
        
        if ($utilisateur->getUsrRole() != 'Admin')
        {
            include ('../vue/v_debut_html.php');
            
            if (isset($_GET['page']))
            {
                if ($_GET['page'] == 'gestion_projet')
                {
                    $accesProjet = new AccesDonneesProjet($_SESSION['projet'], $_SESSION['utilisateur']);
                    $_SESSION['accesProjetSelection'] = $accesProjet->selectionProjetsActivite();
                }
                else if ($_GET['page'] == 'gestion_activite')
                {
                    $accesProjet = new AccesDonneesProjet($_SESSION['projet'], $_SESSION['utilisateur']);
                    $listeProjetsPageActivite = $accesProjet->selection();
                    $accesActivite = new AccesDonneesActivite(new Activite(), $_SESSION['projet'], $_SESSION['utilisateur']);
                    $_SESSION['accesActiviteSelection'] = $accesActivite->selectionActivitesProjets();
                }
                else if ($_GET['page'] == 'gestion_tache')
                {
                    $accesTache = new AccesDonneesTache(new Tache(), $_SESSION['utilisateur']);
                    $_SESSION['accesTacheSelection'] = $accesTache->selection();
                }
                
                if (empty($_GET['tridate']) && empty($_GET['triprojet']) && ($_GET['page'] == 'afficher_activite'))
                {
                    $accesActivite = new AccesDonneesActivite(new Activite(), $_SESSION['projet'], $_SESSION['utilisateur']);
                    $_SESSION['accesActiviteSelectionTrierEcheance'] = $accesActivite->selectionActivitesProjetsTrierEcheance();
                }
                
                $page = $_GET['page'];
                include($ensemblePages[$page]);
            }
            else
            {
                include($ensemblePages['gestion_projet']);
            }
        }
        
        if ($utilisateur->getUsrRole() == 'Admin')
        {
            include('../vue/v_debut_admin.php');
            if (empty($_GET['page']))
            {
                $accesUtilisateur = new AccesDonneesUtilisateur($_SESSION['utilisateur']);
                $accesProjet = new AccesDonneesProjet($_SESSION['projet'], $_SESSION['utilisateur']);
                $accesActivite = new AccesDonneesActivite(new Activite(), $_SESSION['projet'], $_SESSION['utilisateur']);
                
                $_SESSION['projetsUtilisateurs'] = $accesProjet->selectionProjetsUtilisateurs();
                $_SESSION['comptesUtilisateurs'] = $accesUtilisateur->selectionUtilisateurs();
                $_SESSION['activitesUtilisateurs'] = $accesActivite->selectionToutesActivites();
                $_SESSION['statistiques'] = $accesProjet->selectionStatistiques();
            }
            else if($utilisateur->getUsrRole() == 'Admin' && array_key_exists($_GET['page'], $ensemblePages))
            {
                $page = htmlspecialchars($_GET['page']);
            }
            
            include($ensemblePages['gestion_admin_comptes']);
        }
    }

    include_once('../vue/v_fin_html.php');
?>
